
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class PrintChar implements Runnable{//打印字符 - 实现了Runnable接口
    private char charToPrint;//打印的字符内容
    private int times;//打印次数

    public PrintChar(char c,int t){//构造方法 - 初始化成员变量
        charToPrint = c;
        times = t;
    }

    @Override
    public void run(){//重写run()方法
        for (int i = 0; i < times; i++) {//循环输出times次字符
            System.out.print(charToPrint);
        }
    }
}

class PrintNum implements Runnable{//打印数字 - 实现了Runnable接口
    private int lastNum;//定义成员变量lastNum

    public PrintNum(int n){//构造方法 - 初始化成员变量
        lastNum = n;
    }

    @Override
    public void run() {//重写run()方法
        for (int i = 1; i <= lastNum; i++) {//循环输出1~lastNum
            System.out.print(" "+i);
        }
    }
}

public class ExecutorDemo {
    public static void main(String[] args) {
        //使用Java提供的Executors工厂类中的newFixedThreadPool方法创建一个线程池，并设置3个线程并行执行
        ExecutorService excutor = Executors.newFixedThreadPool(3);

        //将实例化的任务对象通过execute()方法创建并启动线程。
        excutor.execute(new PrintChar('a',100));//执行打印字符'a'100次
        excutor.execute(new PrintChar('b',100));//执行打印字符'b'100次
        excutor.execute(new PrintNum(100));//执行打印数字1~100

        //关闭线程池 - 线程池不再接收新的任务，执行中的线程继续执行直到完毕。
        excutor.shutdown();
    }
}

